<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>私有作用域</title>
	</head>
	<body>
		私有作用域好处：<br />
		<p>使用了私有作用域（块级作用域）后，匿名函数中定义的任何变量，都会在执行结束时被
		销毁，这种技术经常在全局作用域中被用在函数外部从而限制向全局作用域中添加过多的变量和函数
		，一帮来说我们都应该尽可能减少向全局作用域中添加变量和函数，因为过多的全局变量和函数很容易导致命名冲突。</p>
	</body>
	
	<script>
		//1模仿块级作用域（私有作用域）
		function box(){
			for (var i=0;i<5;i++) {//js没有块级作用域这么一说
				alert('块级内部'+i)  
			}
			var i;//就算重新声明一个变量也不会改变
			alert('块级外部'+i);// 块级外部5,同样可以访问到
		}
		box();
		
	//用闭包实现块级作用域
		function box(){
			(function(){
				for (var i=0;i<5;i++) {
				alert('块级内部'+i)  
			}
			})();//出了私有作用域变量立即销毁
			
		//	alert('块级外部'+i);// 此处以报错未定义，无法访问局部
		}
		box();
		
		//全局变量定义
		var age = 100;
		alert(age);
		age=null;//手动清空
		
		
		//私有作用域定义
		(function(){
			//这里就是全局的私有作用域
			var age =200;
			alert(age);
			
		})();//出了这里自动销毁
		
		
		
	</script>
</html>
